package com.wh.wisdomsite.xbox.core.security;

import com.wh.wisdomsite.xbox.common.error.MainError;
import com.wh.wisdomsite.xbox.core.impl.DefaultXboxRequestContext;
import com.wh.wisdomsite.xbox.common.session.SessionManager;


/**
 * SecurityManager接口
 * @Package com.wh.wisdomsite.xbox.core.security
 * @author 谢泽鹏
 * @date 2014年10月8日 下午4:02:14
 * @Copyright 个人版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2014
 * @version V1.0
 */
public interface SecurityManager {

    /**
     * 验证系统参数
     * @param xboxRequestContext
     * @return
     */
    MainError validateSystemParameters(DefaultXboxRequestContext xboxRequestContext);


    /**
     * 验证其他参数 访问权限/访问次数/频率/参数是否合法
     * @param xboxRequestContext
     * @return
     */
    MainError validateOther(DefaultXboxRequestContext xboxRequestContext);



    /**
     * 设置调用次数控制器
     * @param invokeTimesController
     */
    void setInvokeTimesController(InvokeTimesController invokeTimesController);


    /**
     * 获取调用次数控制器
     * @return
     */
    InvokeTimesController getInvokeTimesController();


    /**
     * 设置安全控制器
     * @param serviceAccessController
     */
    void setServiceAccessController(ServiceAccessController serviceAccessController);


    /**
     * 设置应用键安全管理器
     * @param appSecretManager
     */
    void setAppSecretManager(AppSecretManager appSecretManager);


    /**
     * 设置会话管理器，以验证会话的合法性
     * @return
     */
    void setSessionManager(SessionManager sessionManager);


    /**
     * 获取会话管理器
     * @return
     */
    SessionManager getSessionManager();


    /**
     * 获取授权应用服务控制器
     * @return
     */
    ServiceAccessController getServiceAccessController();


    /**
     * 获取AppSecretManager
     * @return
     */
    AppSecretManager getAppSecretManager();


}
